সিঙ্গেলটন সার্ভিসেস

Web Development - অ্যাঙ্গুলার (Angular) - সার্ভিস এবং ডিপেন্ডেন্সি ইনজেকশন |
2
2

Angular-এ সিঙ্গেলটন সার্ভিস হল এমন একটি সার্ভিস, যা একটি অ্যাপ্লিকেশনের জীবনকাল (lifetime) জুড়ে শুধুমাত্র একটি একক ইনস্ট্যান্স তৈরি করে এবং তা একাধিক কম্পোনেন্ট বা সার্ভিসের মধ্যে শেয়ার করা হয়। এই সার্ভিসটি সাধারণত অ্যাপ্লিকেশনের গ্লোবাল স্টেট বা গ্লোবাল ফাংশনালিটি প্রদান করে, যেমন ডেটা শেয়ারিং, লগিং, API কল, ইত্যাদি।

Angular ডিপেন্ডেন্সি ইনজেকশন (DI) সিস্টেমের মাধ্যমে সিঙ্গেলটন সার্ভিসগুলি কার্যকরী হয়। @Injectable() ডেকোরেটর এবং providedIn অপশন ব্যবহার করে সিঙ্গেলটন সার্ভিস তৈরি করা হয়।


সিঙ্গেলটন সার্ভিস কিভাবে কাজ করে?

Angular ডিপেন্ডেন্সি ইনজেকশন (DI) সিস্টেমের মাধ্যমে, সার্ভিসগুলো বিভিন্ন কম্পোনেন্ট বা ডিপেন্ডেন্ট ক্লাসে ইনজেক্ট করা হয়। সিঙ্গেলটন সার্ভিসের ক্ষেত্রে, DI সিস্টেম এটি নিশ্চিত করে যে, সার্ভিসটির একটিমাত্র ইনস্ট্যান্স পুরো অ্যাপ্লিকেশন জুড়ে ব্যবহৃত হবে।

@Injectable() ডেকোরেটর

@Injectable() ডেকোরেটর দিয়ে সার্ভিসটি Angular এর DI সিস্টেমে নিবন্ধিত হয়। সিঙ্গেলটন সার্ভিস তৈরি করতে providedIn অপশন ব্যবহার করা হয়, যা সার্ভিসটির স্কোপ নির্ধারণ করে।

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root' // এটি সার্ভিসটি অ্যাপ্লিকেশনটির রুট স্কোপে ইনজেক্ট করবে, যা সিঙ্গেলটন সার্ভিস তৈরি করে
})
export class LoggingService {
  log(message: string) {
    console.log(message);
  }
}

এখানে, providedIn: 'root' মানে হচ্ছে সার্ভিসটি পুরো অ্যাপ্লিকেশন জুড়ে একমাত্র ইনস্ট্যান্সে উপলব্ধ হবে। root স্কোপে এই সার্ভিসটিকে নিবন্ধিত করা হয়, যার ফলে এটি অ্যাপ্লিকেশনের যে কোন কম্পোনেন্টে ব্যবহৃত হতে পারে।


সিঙ্গেলটন সার্ভিস ব্যবহার

এখন এই সিঙ্গেলটন সার্ভিসটি যে কোন কম্পোনেন্টে ইনজেক্ট করা যেতে পারে এবং শুধুমাত্র একটি ইনস্ট্যান্স ব্যবহার করা হবে।

উদাহরণ: সিঙ্গেলটন সার্ভিস ইনজেকশন

import { Component } from '@angular/core';
import { LoggingService } from './logging.service';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html'
})
export class HomeComponent {
  constructor(private loggingService: LoggingService) {
    this.loggingService.log('Home component loaded');
  }
}

এখানে LoggingService সিঙ্গেলটন সার্ভিসটি HomeComponent-এ ইনজেক্ট করা হয়েছে। এই সার্ভিসটি ব্যবহার করে আমরা কোনো লগ মেসেজ কনসোলে প্রিন্ট করতে পারি।

উদাহরণ: সিঙ্গেলটন সার্ভিস অন্য কম্পোনেন্টে ব্যবহার

import { Component } from '@angular/core';
import { LoggingService } from './logging.service';

@Component({
  selector: 'app-about',
  templateUrl: './about.component.html'
})
export class AboutComponent {
  constructor(private loggingService: LoggingService) {
    this.loggingService.log('About component loaded');
  }
}

এখানে, AboutComponent-এও LoggingService ইনজেক্ট করা হয়েছে। কিন্তু, যেহেতু এটি একটি সিঙ্গেলটন সার্ভিস, তাই এটি শুধুমাত্র একটি ইনস্ট্যান্স থাকবে এবং HomeComponent এবং AboutComponent উভয়ই সেই একই ইনস্ট্যান্স শেয়ার করবে।


সিঙ্গেলটন সার্ভিসের সুবিধা

  1. গ্লোবাল স্টেট ম্যানেজমেন্ট: সিঙ্গেলটন সার্ভিস ব্যবহার করে আপনি গ্লোবাল স্টেট ম্যানেজমেন্ট করতে পারেন, যেমন ইউজার তথ্য, লগিং, কনফিগারেশন সেটিংস ইত্যাদি। এক্ষেত্রে, সার্ভিসের একমাত্র ইনস্ট্যান্সটি অ্যাপ্লিকেশনের বিভিন্ন অংশে ব্যবহার করা হয়।
  2. ডেটা শেয়ারিং: অ্যাপ্লিকেশন জুড়ে একাধিক কম্পোনেন্টের মধ্যে ডেটা শেয়ার করতে সিঙ্গেলটন সার্ভিস খুবই উপকারী। উদাহরণস্বরূপ, একটি সার্ভিস ব্যবহার করে API রেসপন্স সংরক্ষণ করা এবং তা অ্যাপ্লিকেশনের বিভিন্ন অংশে প্রদর্শন করা।
  3. কার্যকারিতা এবং রক্ষণাবেক্ষণ: সিঙ্গেলটন সার্ভিসের মাধ্যমে কোডের পুনরাবৃত্তি কমে এবং কোড রক্ষণাবেক্ষণ সহজ হয়। আপনি যখন একই সার্ভিসটি একাধিক কম্পোনেন্টে ব্যবহার করবেন, তখন সার্ভিসটির মধ্যে কোনো পরিবর্তন করলে, তা পুরো অ্যাপ্লিকেশনে প্রভাব ফেলবে।
  4. অ্যাপ্লিকেশন পারফরমেন্স: যেহেতু একটিমাত্র সার্ভিস ইনস্ট্যান্স থাকবে, তাই মেমরি ব্যবহারে সাশ্রয়ী হয় এবং অ্যাপ্লিকেশনের পারফরমেন্সও উন্নত হয়।

সার্ভিসের স্কোপ কনফিগারেশন

Angular-এ সিঙ্গেলটন সার্ভিস ব্যবহারের জন্য providedIn অপশনটি ব্যবহার করা হয়। এছাড়া, যদি আপনি সার্ভিসটিকে নির্দিষ্ট মডিউলের মধ্যে সীমাবদ্ধ করতে চান, তবে এটি শুধুমাত্র ওই মডিউলের স্কোপে প্রদান করা হবে। উদাহরণস্বরূপ, যদি আপনি সার্ভিসটি কেবলমাত্র FeatureModule এ ব্যবহার করতে চান:

@Injectable({
  providedIn: FeatureModule
})
export class FeatureService {
  // সার্ভিসের কোড
}

এভাবে, এই সার্ভিসটি শুধুমাত্র FeatureModule এর মধ্যে ইনজেক্ট হবে এবং অ্যাপ্লিকেশনের অন্য কোথাও উপলব্ধ হবে না।


সারাংশ

Angular-এ সিঙ্গেলটন সার্ভিস একটি গুরুত্বপূর্ণ কনসেপ্ট যা ডিপেন্ডেন্সি ইনজেকশন ব্যবস্থাপনা ও অ্যাপ্লিকেশনের গ্লোবাল স্টেট শেয়ার করতে সাহায্য করে। এটি একাধিক কম্পোনেন্টে ব্যবহৃত হলেও, সার্ভিসটির শুধুমাত্র একটি ইনস্ট্যান্স তৈরি হয় এবং অ্যাপ্লিকেশনের পুরো জীবনকাল জুড়ে এটি ব্যবহৃত হয়।

Content added By
Promotion